home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / pluginy Firefox / 8542 / 8542.xpi / install.js < prev    next >
Text File  |  2010-02-14  |  6KB  |  164 lines

  1. // This code is heavily inspired by Chris Pederick (useragentswitcher) install.js
  2. // Contributors: Philip Chee, deathburger
  3. //
  4. // Philip Chee: Added installation of prefs, components, and locales.
  5. // deathburger: Refactored to move all changable items to the top of the file.
  6.  
  7. // Editable Items Begin
  8. var displayName         = "LastPass"; // The name displayed to the user (don't include the version)
  9. var version             = "1.66.0";
  10. var name                = "lastpass"; // The leafname of the JAR file (without the .jar part)
  11.  
  12. // The following three sets of variables tell this installer script how your
  13. // extension directory structure looks.
  14. // If your jar file contains content/packagename use the second packageDir
  15. // variable. Same rule applies for skinDir and localeDir. I set them up
  16. // independent of each other just in case an extension layout is wacky.
  17.  
  18. var packageDir           = "/"
  19. //var packageDir           = "/" + name + "/"
  20.  
  21. //var skinDir           = ""
  22. var skinDir           = "/"
  23. //var skinDir           = "/" + name + "/"
  24.  
  25. var localeDir           = "/"
  26. //var localeDir           = "/" + name + "/"
  27.  
  28. var locales             = [ "af-ZA", "ar-SA", "ar-EG", "bg-BG", "bn-BD", "ca-ES", "cs-CZ", "da-DK", "de-DE", "el-GR", "en-US", "es-ES", "es-MX", "fa-IR", "fi-FI", "fr-FR", "fr-CA", "gu-IN", "he-IL", "hi-IN", "hr-HR", "hu-HU", "id-ID", "is-IS", "it-IT", "ja-JP", "ko-KR", "lt-LT", "lv-LV", "mk-MK", "ms-MY", "nl-NL", "nn-NO", "nb-NO", "pa-IN", "pl-PL", "pt-BR", "pt-PT", "ro-RO", "ru-RU", "sk-SK", "sl-SI", "sq-AL", "sr-RS", "sv-SE", "th-TH", "tr-TR", "uk-UA", "vi-VN", "zh-CN", "zh-TW" ];
  29. var skins               = [  ]; // "modern"
  30. var prefs               = [ "defaults.js" ];
  31. var components          = [ "lpjs.xpt","lp.xpt","lastpassext.js","lastpasssearch.js","components/lastpass.js" ];
  32. var icons               = [  ]
  33. var searchPlugins       = [  ];
  34.  
  35. // Mozilla Suite/Seamonkey stores all pref files in a single directory
  36. // under the application directory.  If the name of the preference file(s)
  37. // is/are not unique enough, you may override other extension preferences.
  38. // set this to true if you need to prevent this.
  39. var disambiguatePrefs   = true;
  40.  
  41. // Editable Items End
  42.  
  43. var jarName             = name + ".jar";
  44. var jarFolder           = "content" + packageDir
  45. var error               = null;
  46.  
  47. var folder              = getFolder("Profile", "chrome");
  48. var prefFolder          = getFolder(getFolder("Program", "defaults"), "pref");
  49. var compFolder          = getFolder("Components");
  50. var searchFolder        = getFolder("Plugins");
  51. var iconFolder          = getFolder(getFolder("Chrome", "icons"), "default");
  52.  
  53. var existsInApplication = File.exists(getFolder(getFolder("Chrome"), jarName));
  54. var existsInProfile     = File.exists(getFolder(folder, jarName));
  55.  
  56. var contentFlag         = CONTENT | PROFILE_CHROME;
  57. var localeFlag          = LOCALE | PROFILE_CHROME;
  58. var skinFlag            = SKIN | PROFILE_CHROME;
  59.  
  60. // If the extension exists in the application folder or it doesn't exist
  61. // in the profile folder and the user doesn't want it installed to the
  62. // profile folder
  63. if(existsInApplication ||
  64.     (!existsInProfile &&
  65.       !confirm( "Do you want to install the " + displayName +
  66.                 " extension into your profile folder?\n" +
  67.                 "(Cancel will install into the application folder)")))
  68. {
  69.     contentFlag = CONTENT | DELAYED_CHROME;
  70.     folder      = getFolder("chrome");
  71.     localeFlag  = LOCALE | DELAYED_CHROME;
  72.     skinFlag    = SKIN | DELAYED_CHROME;
  73. }
  74.  
  75. initInstall(displayName, name, version);
  76. setPackageFolder(folder);
  77. error = addFile(name, version, "chrome/" + jarName, folder, null);
  78.  
  79. // If adding the JAR file succeeded
  80. if(error == SUCCESS)
  81. {
  82.     folder = getFolder(folder, jarName);
  83.  
  84.     registerChrome(contentFlag, folder, jarFolder);
  85.     for (var i = 0; i < locales.length; i++) {
  86.         registerChrome(localeFlag, folder, "locale/" + locales[i] + localeDir);
  87.     }
  88.  
  89.     for (var i = 0; i < skins.length; i++) {
  90.         registerChrome(skinFlag, folder, "skin/" + skins[i] + skinDir);
  91.     }
  92.  
  93.     for (var i = 0; i < prefs.length; i++) {
  94.         if (!disambiguatePrefs) {
  95.             addFile(name + " Defaults", version, "defaults/preferences/" + prefs[i],
  96.                 prefFolder, prefs[i], true);
  97.         } else {
  98.             addFile(name + " Defaults", version, "defaults/preferences/" + prefs[i],
  99.                 prefFolder, name + "-" + prefs[i], true);
  100.         }
  101.     }
  102.  
  103.     for (var i = 0; i < components.length; i++) {
  104.         addFile(name + " Components", version, "components/" + components[i],
  105.             compFolder, components[i], true);
  106.     }
  107.  
  108.     for (var i = 0; i < searchPlugins.length; i++) {
  109.         addFile(name + " searchPlugins", version, "searchplugins/" + searchPlugins[i],
  110.             searchFolder, searchPlugins[i], true);
  111.     }
  112.  
  113.     for (var i = 0; i < icons.length; i++) {
  114.         addFile(name + " icons", version, "chrome/icons/default" + icons[i],
  115.             iconFolder, icons[i], true);
  116.     }
  117.  
  118.     error = performInstall();
  119.  
  120.     // If the install failed
  121.     if(error != SUCCESS && error != REBOOT_NEEDED)
  122.     {
  123.         displayError(error);
  124.         cancelInstall(error);
  125.     }
  126.     else
  127.     {
  128.         alert("The installation of the " + displayName + " extension succeeded.");
  129.     }
  130. }
  131. else
  132. {
  133.     displayError(error);
  134.     cancelInstall(error);
  135. }
  136.  
  137. // Displays the error message to the user
  138. function displayError(error)
  139. {
  140.     // If the error code was -215
  141.     if(error == READ_ONLY)
  142.     {
  143.         alert("The installation of " + displayName +
  144.             " failed.\nOne of the files being overwritten is read-only.");
  145.     }
  146.     // If the error code was -235
  147.     else if(error == INSUFFICIENT_DISK_SPACE)
  148.     {
  149.         alert("The installation of " + displayName +
  150.             " failed.\nThere is insufficient disk space.");
  151.     }
  152.     // If the error code was -239
  153.     else if(error == CHROME_REGISTRY_ERROR)
  154.     {
  155.         alert("The installation of " + displayName +
  156.             " failed.\nChrome registration failed.");
  157.     }
  158.     else
  159.     {
  160.         alert("The installation of " + displayName +
  161.             " failed.\nThe error code is: " + error);
  162.     }
  163. }
  164.